package servicios

import aerolinea.Asiento
import aerolinea.Categoria
import daos.AsientoDAO
import daos.Operation
import daos.SessionManager
import dominio.Usuario
import java.util.List

class AsientoManager {
	
	def consultarAsiento(int id) {
		SessionManager.runInSession(new ConsultarAsiento(id))
	}
	
	def crearAsiento(int id, Categoria cat) {
		SessionManager.runInSession(new CrearAsiento(id, cat))
	}

	def modificarAsiento(int id, Categoria cat, boolean reservado, Usuario usuario) {
		SessionManager.runInSession(new ModificarAsiento(id, cat, reservado, usuario))
	}
}

class ConsultarAsiento implements Operation<Asiento>{
	
	var int idAsiento
	
	new(int id) {
		idAsiento= id
	}

	override Asiento execute() {
		var a = new AsientoDAO().get(idAsiento)
		a
	}
}

class CrearAsiento implements Operation<Asiento> {
	
	var int idAsiento
	var Categoria categoria
	var boolean reservado
	var Usuario usuario
	
	new(int id, Categoria cat){
		idAsiento= id
		categoria= cat
		reservado= false
		usuario= null
	}

	override Asiento execute() {
		var a = new Asiento(idAsiento, categoria)
		new AsientoDAO().save(a)
	    a
	}
}

class ModificarAsiento implements Operation<Asiento> {

	var int idAsiento
	var Categoria categoria
	var boolean reservado
	var Usuario usuario

	new(int id, Categoria cat, boolean reserv, Usuario user){
		idAsiento= id
		categoria= cat
		reservado= reserv
		usuario= user
	}
	

	override Asiento execute() {
		var a = new AsientoDAO().get(idAsiento)
		a.setCategoria(categoria)
		a.setReservado(reservado)
		a.setUsuario(usuario)
		a
	}

}